package com.kexio.log.analytics.service;

import java.util.List;

import com.kexio.log.analytics.adapter.PerformanceMonitorAdapter.TraceSpan;

/**
 * 性能分析器接口
 * 
 * 负责分析和处理系统性能相关的数据
 * 
 * @author Kexio Team
 * @since 1.0.0
 */
public interface PerformanceAnalyzer {
    
    /**
     * 分析方法性能
     * 
     * @param className 类名
     * @param methodName 方法名
     * @param layer 层级 (CONTROLLER, SERVICE, MAPPER)
     * @param executionTime 执行时间 (毫秒)
     * @param isSuccess 是否成功
     * @param exception 异常信息 (如果有)
     * @param memoryUsage 内存使用量 (字节)
     */
    void analyzeMethodPerformance(String className, String methodName, String layer,
                                 long executionTime, boolean isSuccess, Throwable exception,
                                 long memoryUsage);
    
    /**
     * 分析系统资源指标
     * 
     * @param cpuUsage CPU 使用率 (0-100)
     * @param memoryUsage 内存使用量 (字节)
     * @param freeMemory 可用内存 (字节)
     * @param activeThreads 活跃线程数
     */
    void analyzeSystemMetrics(double cpuUsage, long memoryUsage, long freeMemory, int activeThreads);
    
    /**
     * 分析请求链路性能
     * 
     * @param traceId 链路追踪 ID
     * @param spans 调用链节点
     */
    void analyzeRequestTrace(String traceId, List<TraceSpan> spans);
}
